# -*- coding: utf-8 -*-
"""
@Time    : 2024/8/27 15:22 
@Author  : ZhangShenao 
@File    : google_serper_tool.py 
@Desc    : Serper谷歌搜索工具

Serper是一个第三方的谷歌搜索服务提供商
它会在后台浏览器模拟真实的页面运行,完全模仿人类的操作,可以确保搜索结果返回用户实际看到的内容
目前体验测试来看,Serper比谷歌官方提供的检索服务内容更全面、响应速度更快

Serper官网: https://serper.dev/
LangChain整合文档: https://python.langchain.com/v0.2/docs/integrations/tools/google_serper/
"""

import dotenv
from langchain_community.tools import GoogleSerperRun
from langchain_community.utilities import GoogleSerperAPIWrapper
from pydantic import BaseModel, Field


# 定义搜索查询参数
class SerperArgSchema(BaseModel):
    query: str = Field(description="执行搜索的查询语句")


def create_google_serper_tool() -> GoogleSerperRun:
    """创建Google Serper搜索工具"""

    # 加载环境变量
    dotenv.load_dotenv()

    # 创建并返回工具
    return GoogleSerperRun(
        name="google_serper",  # 指定工具名称
        # 指定工具描述
        description=(
            "一个低成本的谷歌搜索API。"
            "当你需要回答相关的新闻或时事问题时，可以调用该工具。"
            "该工具的输入是执行搜索的查询语句。"
        ),
        args_schema=SerperArgSchema,  # 指定输入参数格式
        api_wrapper=GoogleSerperAPIWrapper(),  # 指定Google API包装器
    )
